Use of Patterns in Formal Development: Systematic Transition from Problems to Architectural Designs
نویسندگان
چکیده
We present a pattern-based software lifecycle and a method that supports the systematic execution of that lifecycle. First, problem frames are used to develop a formal specification of the problem to be solved. In a second phase, architectural styles are used to construct an architectural specification of the software system to be developed. That specification forms the basis for fine-grained design and implementation. 1 Elaborating the software development process Experience has shown that problems and bugs in software systems take their source mainly in the early phases of the software development process1. Hence, a software development lifecycle that derives the design of the software directly from the requirements and then passes on to the implementation cannot be regarded as satisfactory. The step between requirements and design is too large. An additional phase should be introduced between the requirements and the design. One idea that has been accepted for some time now is that some kind of specification should be set up on the basis of the requirements, so that the requirements are transformed into documents useful for developers. Specifications lead to a deeper understanding of the problems to be solved, and they can be used to support other development activities (e.g. coding, testing, maintenance). However, producing appropriate specifications often turns out to be difficult for practitioners. For instance, finding an appropriate starting point for the formal specification process is a very common problem. M. Jackson [Jac95,Jac01] proposes the use of problem frames for presenting and understanding software development problems. A problem frame is a characterization of a class of problems in terms of their main components and the connections between these components. A set of typical solution methods is associated to each problem frame. The basic idea is that once an appropriate problem frame for a given problem is found, we also have good proposals for constructing a solution to that problem. We think this idea 1 See for example http://www.standishgroup.com/sample research Specification choice of architecture Requirements Design Code choice of problem frame Fig. 1. Lifecycle using problem frames and architectures Requirements Design Spec Code Implementation Spec. Implementation Choices Architectural Choices Design Choices Specification Description Structured Requirements Spec. Architecture Choice of Problem Frame Choice of Arch. Style Fig. 2. Complete lifecycle using problem frames and architectural styles is useful, but it provides only a coarse structure of the problem. Hence, problem frames should be supplemented by means that allow for a finer structuring. Architectural styles [SG96,BCK98] are a means to structure a software system, i.e. to choose its architecture. Since architectural styles are used to construct designs, they should not be used right at the beginning of the development process, but only after the problem has been fully understood and specified. Figure 1 shows how to bridge the gap between the requirements and the design of a software system. It is possible to elaborate the software development lifecyle further, as suggested in Figure 2. Here, several phases are introduced between the requirements and the design of a software system. Problem frames and architectural styles are both forms of patterns. While problem frames are concerned with problems, architectural styles are concerned with solutions. Hence, with Figures 1 and 2, we propose a pattern-based software lifecycle. Patterns should be used systematically and on different levels of abstraction. In the following, we show how the steps from an informal requirements description to an architectural specification shown in Figure 2 can be carried out in a systematic way. This work further elaborates the approach by Choppy and Reggio [CR00], where problem frames are used to structure formal specifications. We first discuss how patterns can be used on different abstraction levels and in different phases of the software development process in Section 2. Section 3 presents a method to carry out pattern based formal development in a systematic way. The application of that method is illustrated by the case study of a robot simulation in Section 4. In Section 5, we summarize our work and also discuss related work that aims at methodological support for developing formal specifications. 2 Patterns for different software development activities Patterns are a means to reuse software development knowledge on different levels of abstraction. Patterns classify sets of software development problems or solutions that share the same structure. Patterns have been introduced on the level of detailed object oriented design [GHJV95]. Today, patterns are defined for different activities. Problem Frames [Jac01] are patterns Control CD!C2 CM!C1 domain Controlled C C3 machine behaviour Required
منابع مشابه
آفرینش معماری به روش قیاس با طبیعت
Architectural design inspired by nature is one of the conventional methods in architectural design, but different types of the influence of nature on architectural design are not well studied yet. In spite of the importance of the type of inspiration, there is not a significant research about the relation of this method with other methods of architectural creation, nor about the correct way of ...
متن کاملخوانش هنر تیموری بر مبنای اندیشههای سهروردی - مطالعهای بر نقشمایههای هندسی مسجد گوهرشاد
A work of art is the souvenir of the artist's journey through the immaterial world of realities and intuition. The language of this art is a language of secrets. This enables the artist to establish a link between the innermost and outermost essence of existence. Decorative motifs are the intersection of art and mystical thought. Many Islamic concepts are mixed with geometry and because of this...
متن کاملAnnotation in Architecture: A Systematic Approach toward Mobilization and Development of Theoretical, Research, and Critical Basis in Architecture
Annotations usually refer to marginal notes that explain a difficult or ambiguous subject, provide a general definition or a critical remark for a particular part of a text. Historically, annotating was a well-known tradition in Islamic sciences and was used especially in times when there were less new potentials for generating new knowledge. The main question of this research is, can the tradi...
متن کاملThe Impact of Modern Lifestyle on the Architecture of the Houses Built in Hamedan in the First Pahlavi Regime
Lifestyle which encompasses social, cultural, and economic factors deeply impacts upon the people's behavioral patterns and mental attitudes. One of the manifestations of lifestyle is the quality of selecting living places, which in turn influences the architecture of the houses. The purpose of the present study is to examine the extent to which modern lifestyle affected Hamadanian people`s l...
متن کاملDesign and Analysis Support for Abstract Models of Component-based Embedded Systems
Developing industrial real-time software systems is challenging due to demands on system safety and reliability, through stringent system requirements in terms of functionality, timing, resource consumption etc. Due to this, the system development needs to ensure predictability before the actual implementation, through reliable engineering methods. To address these challenges, model-based engin...
متن کامل